﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BUS;
using DTO;
namespace QLDT
{
    public partial class frm_ChonDeTai : DevExpress.XtraEditors.XtraForm
    {
        bool flag = false;
        private DTO_TaiKhoan taikhoan;
        string str_DSDT = "Danh sách đề tài";
        public frm_ChonDeTai()
        {
            InitializeComponent();

        }
        public frm_ChonDeTai(DTO_TaiKhoan tk)
        {
            taikhoan = tk;
            InitializeComponent();
        }

        private void frm_ChonDeTai_Load(object sender, EventArgs e)
        {
            this.Text = this.Text + " | Xin chào: " + taikhoan.TenNguoiDung;
            gv_DSChonDT.GroupPanelText = str_DSDT;
            gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
            layoutCt_MaCN.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            load();
        }
        public void createGridLookUp()
        {
            gridLookChonLoaiDT.EditValue = null;
            gridLookChonLoaiDT.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookChonLoaiDT.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookChonLoaiDT.Properties.ValueMember = "MaLoaiDT";
            gridLookChonLoaiDT.Properties.DisplayMember = "MaLoaiDT";
            gridLookChonLoaiDT.Properties.View.BestFitColumns();
            gridLookChonLoaiDT.Properties.PopupFormWidth = 400;
            gridLookChonLoaiDT.Properties.NullText = "Chọn loại đề tài";
            gridLookChonLoaiDT.Properties.DataSource = BUS_LoaiDT.selectLoaiDeTai();

            gridLookUp_MaCN.EditValue = null;
            gridLookUp_MaCN.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookUp_MaCN.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookUp_MaCN.Properties.ValueMember = "MaCN";
            gridLookUp_MaCN.Properties.DisplayMember = "MaCN";
            gridLookUp_MaCN.Properties.View.BestFitColumns();
            gridLookUp_MaCN.Properties.PopupFormWidth = 400;
            gridLookUp_MaCN.Properties.NullText = "Chọn mã chuyên ngành";
            gridLookUp_MaCN.Properties.DataSource = BUS_ChuyenNganh.SelectChuyenNganh();

        }
        public void load()
        {
            gridDSChonDT.DataSource = BUS_DeTai.selectDeTai_ALL_ChonDT();
            Bindings();
            createGridLookUp();
            gridDSChonDT.Enabled = true;
            //layoutchonnhom.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            gridLookChonLoaiDT.Enabled = true;
            if (gv_DSChonDT.RowCount <= 0)
            {
                btnChon.Enabled = false;
            }
            else
                btnChon.Enabled = true;
        }
        public void Bindings()
        {
            txtMaDT.DataBindings.Clear();
            txtMaDT.DataBindings.Add("Text", gv_DSChonDT.DataSource, "MaDT");

            txtTenDT.DataBindings.Clear();
            txtTenDT.DataBindings.Add("Text", gv_DSChonDT.DataSource, "TenDT");
        }
        //tiny nguyen tinh
        private void gridLookChonLoaiDT_EditValueChanged(object sender, EventArgs e)
        {

            string loaidt = gridLookChonLoaiDT.EditValue.ToString();
            List<DTO_PhanCongDT> listpcdt_Masv =  BUS_PhanCongDT.Select_PhanCongDeTai_MaSV_LoaiDT(taikhoan.TenTK, loaidt);
            if (listpcdt_Masv.Count == 0)
            {
                btnChon.Enabled = true;
               
                flag = true;

            }
            else
            {
                btnChon.Enabled = true;
                gv_DSChonDT.GroupPanelText = str_DSDT;
                gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
                flag = false;
            }
            if (loaidt == "LDT01")
            {
                //layout_check.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                txtMaDT.Text = "";
                txtTenDT.Text = "";
                gridDSChonDT.Enabled = false;
                //if (kiemtrasv_pc())
                {
                   // check_LDDT.Enabled = true;
                    //btnChon.Enabled = true;
                }
                //else
                {
                   // check_LDDT.Enabled = false;
                   // btnChon.Enabled = false;
                   // XtraMessageBox.Show("Ban da chon de tai nay roi", "Thông báo");
                    //frm_QLPhanCongChiTiet_SV frm = new frm_QLPhanCongChiTiet_SV(taikhoan);
                    //frm.Show();
                }
            }
            if (gridLookChonLoaiDT.EditValue.ToString() == "LDT01")
            {
                layoutCt_MaCN.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                
                //gv_DSChonDT.GroupPanelText = str_DSDT + " -> Không du?c phép ch?n d? án môn h?c 1";
                // gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                flag = true;
                //btnChon.Enabled = true;
            }
            else if (gridLookChonLoaiDT.EditValue.ToString() == "LDT02")
            {
                
                layoutCt_MaCN.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                if (!kiemtrangayhethan())
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT + " -> Đã hết hạn đăng ký đề tài này";
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                    btnChon.Enabled = false;
                    flag = true;
                }
                else
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT;
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
                    btnChon.Enabled = true;
                    flag = false;
                }
            }
            else if((gridLookChonLoaiDT.EditValue.ToString() == "LDT03"))
            {
                layoutCt_MaCN.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                if (!kiemtrangayhethan())
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT + " -> Đã hết hạn đăng ký đề tài này";
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                    btnChon.Enabled = false;
                    flag = true;
                }
                else if(flag == false)
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT;
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
                    btnChon.Enabled = true;
                    flag = false;
                }
            }
            else
            {
                 layoutCt_MaCN.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
                if (!kiemtrangayhethan())
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT + " -> Đã hết hạn đăng ký đề tài này";
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                    btnChon.Enabled = false;
                    flag = true;
                }
                else if(flag == false)
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT;
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
                    btnChon.Enabled = true;
                    flag = false;
                }
            }
            string maloaidt = gridLookChonLoaiDT.EditValue.ToString();
            gridDSChonDT.DataSource =  BUS_DeTai.ChonDT_TheoLoaiDT(maloaidt);
            Bindings();
            
        }

        private void grid_DSChonDT_Check_ChonDT_EditValueChanged(object sender, EventArgs e)
        {
            if (gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "Chon").ToString() == "True")
            {
                
            }
        }
        public bool kiemtrangayhethan()
        {
            DateTime ngayhienhanh = DateTime.Now.Date;
            if (gridLookChonLoaiDT.EditValue == null)
                return true ;
            string loaidt = gridLookChonLoaiDT.EditValue.ToString();
            List<DTO_PhanCongDT>listpcdt_Masv = BUS_PhanCongDT.Select_PhanCongDeTai_MaSV_LoaiDT(taikhoan.TenTK,loaidt);
            if (listpcdt_Masv.Count == 0)
                return true;
            DateTime ngayhethan = DateTime.Parse(listpcdt_Masv[0].NgayHetHan.ToString());
            if (ngayhienhanh > ngayhethan)
                return false;
            return true;
        }
        public bool kiemtrasv_pc()
        {
            if (gridLookChonLoaiDT.EditValue == null)
                return true;
            
            string loaidt = gridLookChonLoaiDT.EditValue.ToString();
            List<DTO_PhanCongDT> listsv_pc = BUS_PhanCongDT.SelectSinhVien_TrongPhanCong(taikhoan.TenTK, loaidt);
            if (listsv_pc.Count >= 1)
                return false;

            return true;
        }
        public bool kiemtrasv_pc_LDT02()
        {
            if (gridLookChonLoaiDT.EditValue == null)
                return true;

            string loaidt = gridLookChonLoaiDT.EditValue.ToString();
            if (gridLookUp_MaCN.EditValue == null)
                return true;

            string macn = gridLookUp_MaCN.EditValue.ToString();
            List<DTO_PhanCongDT> listsv_pc = BUS_PhanCongDT.SelectSinhVien_TrongPhanCong_LDT02(taikhoan.TenTK, macn,loaidt);
            if (listsv_pc.Count >= 1)
                return false;

            return true;
        }
        private void btnChon_Click(object sender, EventArgs e)
        {
            ///////////////////////////////////////////LDT01//////////////////////////////////////
            if (gridLookChonLoaiDT.EditValue == null)
                return;
            string loaidt = gridLookChonLoaiDT.EditValue.ToString();
            // string macn = gridLookUp_MaCN.EditValue.ToString();
            if (loaidt == "LDT01")
            {
                //PhanCongTudong_Chon_LD01
                if (BUS_QLPhanCongDT.KiemTraDKLoaiUpdateDT01(taikhoan.TenTK, loaidt))
                {

                    if (!BUS_PhanCongDT.ChonDT01(taikhoan.TenTK, loaidt))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");

                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công", "Thông báo");
                    }
                }
                else if (!BUS_QLPhanCongDT.KiemTraDKLoaiInsertDT01(taikhoan.TenTK, loaidt))
                {
                    if (!BUS_PhanCongDT.PhanCongTudong_Chon_LD01(loaidt, taikhoan.TenTK))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");

                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công", "Thông báo");

                    }
                }
                else
                {
                    XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                }
            }

            List<DTO_PhanCongDT> listpcdt_Masv = BUS_PhanCongDT.Select_PhanCongDeTai_MaSV_LoaiDT(taikhoan.TenTK, loaidt);
            if (listpcdt_Masv.Count == 0)
            {
            }
            if (gridLookChonLoaiDT.EditValue.ToString() == "LDT02")
            {
                string maloaidt = gridLookChonLoaiDT.EditValue.ToString();
                string masv = taikhoan.TenTK;
                string macn = gridLookUp_MaCN.EditValue.ToString();
                BUS_PhanCongDT.KiemTra_MaDT_LoaiDT(masv, macn, maloaidt);
                int svhh = BUS_DeTai.TongSVHH_TheoMaCN(macn);
                int svtd = BUS_DeTai.TongSVToiDa_TheoMaCN(macn);
                if (svhh < svtd)
                {
                    //if (kiemtrasv_pc_LDT02())
                    //{
                    if (!BUS_PhanCongDT.ThemPhanCongDeTai_LDT02_new(masv, maloaidt, macn))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");

                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công, Lưu ý nếu bạn đã đăng ký trước đó thì đề tài của bạn đã thay đổi", "Thông báo");

                    }
                    /* }
                     else
                     {
                         XtraMessageBox.Show("Không được đăng ký nữa!", "Thông báo");

                     }*/

                }
                //else
                else
                {
                    XtraMessageBox.Show("Chuyên ngành này đã đủ số lượng sinh viên chọn, bạn hãy chọn chuyên ngành khác", "Thông báo");
                }
            }
            else if (gridLookChonLoaiDT.EditValue.ToString() == "LDT03")
            {
                int svhh = int.Parse(gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "SoSVHH").ToString());
                int svtd = int.Parse(gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "SVToiDa").ToString());
                if (svhh >= svtd)
                {
                    XtraMessageBox.Show("Đề tài này đã quá số lượng sinh viên chọn, hãy chọn đề tài khác");
                    return;
                }
              //  gridChonNhom.DataSource = BUS_PhanCongDT.select_PhanCongDeTai_Nhom_MaDT(txtMaDT.Text);
              //  layoutchonnhom.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                gridDSChonDT.Enabled = false;
              //  txtNhom.DataBindings.Clear();
              //  txtNhom.DataBindings.Add("Text", gvChonnhom.DataSource, "Nhom");
                gridLookChonLoaiDT.Enabled = false;

                string maloaidt = gridLookChonLoaiDT.EditValue.ToString();
                string masv = taikhoan.TenTK;
                string madt = txtMaDT.Text;

                //////////huyen ///////////
                if (BUS_QLPhanCongDT.KiemTraDKLoaiUpdateDT03(taikhoan.TenTK, loaidt))
                {


                    if (!BUS_PhanCongDT.ChonDT03(taikhoan.TenTK, loaidt, madt))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công", "Thông báo");
                    }

                }
                if (BUS_QLPhanCongDT.KtratontaiLoaiDT03(taikhoan.TenTK, loaidt))
                {
                    if (!BUS_PhanCongDT.ChonDT03(taikhoan.TenTK, loaidt, madt))
                    {
                        XtraMessageBox.Show("Bạn không thể đổi đề tài ! ", "Thông báo");
                    }
                    else
                    {
                        XtraMessageBox.Show("Bạn đã đổi đề tài thành công !", "Thông báo");
                    }
                }
                else if (!BUS_QLPhanCongDT.KiemTraDKLoaiInsertDT03(taikhoan.TenTK, loaidt))
                {
                    if (!BUS_PhanCongDT.ThemPhanCongDeTai_LDT03(maloaidt, masv, madt))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công", "Thông báo");
                    }
                }

                else
                {

                    XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                }
            }
            //////Loai de tai 04//////////////

            else if (gridLookChonLoaiDT.EditValue.ToString() == "LDT04")
            {
                int svhh = int.Parse(gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "SoSVHH").ToString());
                int svtd = int.Parse(gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "SVToiDa").ToString());
                if (svhh >= svtd)
                {
                    XtraMessageBox.Show("Đề tài này đã quá số lượng sinh viên chọn, hãy chọn đề tài khác");
                    return;
                }
              //  gridChonNhom.DataSource = BUS_PhanCongDT.select_PhanCongDeTai_Nhom_MaDT(txtMaDT.Text);
              //  layoutchonnhom.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
                gridDSChonDT.Enabled = false;
              //  txtNhom.DataBindings.Clear();
               // txtNhom.DataBindings.Add("Text", gvChonnhom.DataSource, "Nhom");
                gridLookChonLoaiDT.Enabled = false;

                string maloaidt = gridLookChonLoaiDT.EditValue.ToString();
                string masv = taikhoan.TenTK;
                string madt = txtMaDT.Text;

                //////////huyen ///////////
                if (BUS_QLPhanCongDT.KiemTraDKLoaiUpdateDT03(taikhoan.TenTK, loaidt))
                {
                    if (!BUS_PhanCongDT.ChonDT03(taikhoan.TenTK, loaidt, madt))
                    {
                        XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                    }
                    else
                    {
                        XtraMessageBox.Show("Đăng ký thành công", "Thông báo");
                    }

                }
                else if (BUS_QLPhanCongDT.KtratontaiLoaiDT03(taikhoan.TenTK, loaidt))
                {
                    if (!BUS_PhanCongDT.ChonDT03(taikhoan.TenTK, loaidt, madt))
                    {
                       XtraMessageBox.Show("Bạn không thể đổi đề tài ! ", "Thông báo");
                    }
                     else
                     {
                        XtraMessageBox.Show("Bạn đã đổi đề tài thành công !", "Thông báo");
                      }
                 }
               
                else
                {

                    XtraMessageBox.Show("Đăng ký đề tài không thành công", "Thông báo");
                }
            }
        }
        

        private void btnDong_Click(object sender, EventArgs e)
        {
            //layoutchonnhom.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            gridDSChonDT.Enabled = true;
            gridLookChonLoaiDT.Enabled = true;
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

       

        private void txtMaDT_EditValueChanged(object sender, EventArgs e)
        {
            if (txtMaDT.Text == "")
                return;

            string madt = txtMaDT.Text;
            string maloaidt;
            maloaidt = gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "MaLoaiDT").ToString();
            string masv = taikhoan.TenTK;
            BUS_PhanCongDT.KiemTra_MaDT_LoaiDT(madt, masv, maloaidt);
                if (BUS_PhanCongDT.KiemTra_MaDT_LoaiDT(madt, masv, maloaidt) == true)
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT + " -> Bạn đã đăng ký đề tài này rồi";
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                }
                else if (flag== false)
                {
                    gv_DSChonDT.GroupPanelText = str_DSDT;
                    gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
                }
        }

        private void txtMaCN_EditValueChanged(object sender, EventArgs e)
        {
            if (gridLookUp_MaCN.EditValue.ToString() == "")
                return;
            string macn = gridLookUp_MaCN.EditValue.ToString();
            string madt = txtMaDT.Text;
            string maloaidt;
            maloaidt = gv_DSChonDT.GetRowCellValue(gv_DSChonDT.FocusedRowHandle, "MaLoaiDT").ToString();
            string masv = taikhoan.TenTK;
            BUS_PhanCongDT.KiemTra_MaDT_LoaiDT(madt, masv, maloaidt);
            if (BUS_PhanCongDT.Kiemtra_PCDeTai_MaSV_MaCN(masv, macn, maloaidt) == true)
            {
                gv_DSChonDT.GroupPanelText = str_DSDT + " -> Bạn đã chọn chuyên ngành rồi này này rồi";
                gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Red;
                flag = true;
            }
            else if (flag == false)
            {
                gv_DSChonDT.GroupPanelText = str_DSDT;
                gv_DSChonDT.Appearance.GroupPanel.ForeColor = Color.Black;
            }
        }
        
    }
}